package com.sojson.project.sys.role.dao;

import java.util.List;
import java.util.Set;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sojson.project.sys.role.entity.dto.RoleDto;
import com.sojson.project.sys.role.entity.dto.RolePageDto;
import com.sojson.project.sys.role.entity.po.Role;
import com.sojson.project.sys.role.entity.vo.RoleVo;

/**
 * 角色信息表Dao
 * 
 * @author liu
 * @date 2021-04-13
 */
public interface RoleDao extends BaseMapper<Role> {

    /**
     * 列表查询
     * 
     * @param dto
     * @return
     */
    List<RoleVo> list(RoleDto dto);

    /**
     * 分页查询
     * 
     * @param dto
     * @return
     */
    List<RoleVo> page(RolePageDto dto);

    /**
     * 通过id查询
     * 
     * @param id
     * @return
     */
    RoleVo findById(String id);

    /**
     * 通过对象删除
     * 
     * @param dto
     * @return
     */
    int removeByDto(RoleDto dto);

    /**
     * 清空数据
     * 
     * @return
     */
    int clear();

    /**
     * 根据用户ID获取角色列表
     * 
     * @param userId
     * @return
     */
    List<RoleVo> getRolesByUserId(String userId);

    /**
     * 根据用户ID获取角色ID列表
     * 
     * @param userId
     * @return
     */
    Set<String> getRoleIdsByUserId(String userId);

    /**
     * 根据用户ID和环境获取角色ID列表
     * 
     * @param userId
     * @param env
     * @return
     */
    Set<String> getRoleIdsByUserIdAndEnv(String userId, String env);

    /**
     * 获取权限组
     * 
     * @return
     */
    List<RoleVo> getPerms();

    /**
     * 统计不是此环境的角色数量
     * 
     * @param envs
     * @param roleIds
     * @return
     */
    int countByNotEnv(List<String> envs, Set<String> roleIds);

}